home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1993 November / JCSM Shareware Collection - 1993-11.iso / cl720 / fast278j.lzh / CLIST.F < prev    next >
Text File  |  1980-01-01  |  2KB  |  124 lines

  1.  
  2. ;== CLIST - LIST PROGRAMS IN TWO COLUMNS ===================================
  3.  
  4. var columns,lines,wide
  5. const pmax=16384,imax=10240
  6. pbuffer ? pmax
  7. ibuffer ? imax
  8.  
  9. #short
  10. #inpend=0
  11. on error
  12.     {
  13.     print bios:error msg "\dos.err"
  14.     print bios "!":stop
  15.     }
  16.  
  17. proc new_buffer
  18.     {
  19.     pline=0:pcol=0:px=0
  20.     fill pmax/2 from pbuffer with 2020h
  21.     }
  22.  
  23. proc print_buffer
  24.     {
  25.     lprint chr 15;chr 27;chr '0';
  26.     if pline then
  27.     {
  28.     m=pbuffer
  29.     repeat lines
  30.         {
  31.         repeat columns
  32.         {
  33.         lprint chr peekb m;:m++
  34.         }
  35.         lprint
  36.         }
  37.     lprint ff;
  38.     }
  39.     new_buffer
  40.     }
  41.  
  42. proc next_col
  43.     {
  44.     pcol+=wide+4:px=0
  45.     if pcol>=columns then print_buffer
  46.     pline=0
  47.     }
  48.  
  49. proc next_line
  50.     {
  51.     px=0
  52.     pline++
  53.     if pline>=lines then next_col
  54.     }
  55.  
  56. proc put(p)
  57.     {
  58.     if px>=wide then next_line
  59.     pokeb pbuffer+pline*columns+pcol+px,p
  60.     px++
  61.     }
  62.  
  63. print bios "CLIST: By Peter Campbell" cr lf
  64. print bios "File(s) ";
  65.  
  66. inputs name
  67. print bios
  68. if peekb (name+2)=0 then error 999
  69.  
  70. lines=72
  71. columns=130
  72. wide=(columns/2)-2
  73. if (lines*columns)>pmax then error 11
  74.  
  75. find first name+2
  76. goto fentry
  77.  
  78. forever
  79.     {
  80.     find next
  81.     fentry:
  82.     moveb 13 from dta segment|dta offset+30 to name
  83.     open #1,name
  84.     lprint chr 14;
  85.     m=name:while peekb m lprint chr peekb m;:m++
  86.     lprint
  87.  
  88.     new_buffer
  89.     next_read:
  90.     ilen=read #1,imax to ibuffer
  91.     if ilen=0 then goto innext
  92.     iadd=ibuffer
  93.  
  94.     while ilen
  95.     {
  96.     c=peekb iadd:ilen--:iadd++
  97.     if c=26 then goto innext
  98.     if c=10 then goto ill
  99.     if c=13 then
  100.         {
  101.         next_line
  102.         goto ill
  103.         }
  104.     if c=9 then
  105.         {
  106.         x=(px and 248)+8
  107.         repeat x-px put(' ')
  108.         }
  109.     else put(c)
  110.  
  111.     ill:
  112.     }
  113.     goto next_read
  114.  
  115.     innext:
  116.     close #1
  117.     print_buffer
  118.     }
  119.  
  120. ;== DATA ===================================================================
  121.  
  122. name:
  123. string 20
  124.